package Buffer2;

import java.io.*;

public class Test2 {//定义一个测试类
    public static void main(String[] args) throws Exception {//main方法入口并抛出异常
        File  secfloder=new File("E:\\itcast");//创建源文件路径对象
        File   destfolder=new File("F:");//创建目的地路径F盘
        copyFile1(secfloder,destfolder);//调用复制方法

    }
    private static void copyFile1(File secfloder, File destfolder) throws Exception {//创建方法复制
        if(secfloder.isDirectory()){//对itcast进行判断，如果是目录
            String name = secfloder.getName();//则获取该目录的名称
            File newFolder=new File(destfolder,name);//将此名称包装给F盘
            if(!newFolder.exists()){//对这个新包装的F下目录进行判断，如果目录不存在
                newFolder.mkdir();//则创建这个包装的目录
            }
            File[] files = secfloder.listFiles();//然后遍历这个ITcast内中的所有文件夹或者文件
            for (File file : files) {//遍历文件
                copyFile1(file,newFolder);//调用方法进行复制
            }
        }else{
            File  destFile=new File(destfolder,secfloder.getName());//
             copyFile(secfloder,destFile);//
        }


    }

    private static void copyFile(File file, File destfolder1) throws Exception {
        //定义方法，源文件文件每一个文件名称作为第一个参数
        //目的地文件码目录作为第二个参数
        BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));//创建字节缓冲输入流对象
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(destfolder1));//创建字节输出流对象
        byte[] bytes =new byte[1024];//定义读取数据的长度为1024
        int ten;//定义保存读取数据的有效数据长度变量
        while((ten=bis.read(bytes))!=-1){//使用while循环读取数据
            bos.write(bytes,0,ten);//通过字节缓冲输出流写入数据
        }
        bis.close();//关闭资源
        bos.close();//关闭资源



    }
}

